package com.service.yzj.model.pages.wx;
import java.io.Serializable;
import java.util.List;

import com.service.yzj.model.product.ProductBasicInfo;

import lombok.Data;

@Data
public class HomeModule<T> implements Serializable {
    /**
     * 模块数据，不同的模块类型，对应不同的data；目前有以下3种类型
     */
    private Object[] list;
    /**
     * 模块描述
     */
    private String description;
    /**
     * 模块id，ID 编号
     */
    private String id;
    /**
     * 模块名称
     */
    private String name;
    /**
     * 模块类型，icon;banner;list
     */
    private HomeModuleType type;

    public HomeModule(HomeModuleType moduleType, List<T> moduleList) {
        // 该版本java不支持instanceof泛型，所以只能这样判断
        if (moduleList!= null && !moduleList.isEmpty()) {
            if(ProductBasicInfo.class.isAssignableFrom(moduleList.get(0).getClass())){
                type = moduleType;
                name = "产品列表";
                description = "产品列表";
                list = moduleList.toArray();
            }
            else {
                // 处理其他类型的情况或者抛出异常
                type = moduleType;
                name = "图片列表";
                description = "图片列表";
                list = moduleList.toArray();
            }
        }
    }

    // TODO可能用不上这个方法
    // public Object[] setDataAccordingToType(Integer length) {
    //     switch (type) {
    //         case ICON:
    //         case BANNER:
    //             ImageItem[] imageList = new ImageItem[length];
    //             data = imageList;
    //             break;
    //         case LIST:
    //             BasicInfo[] productListArray = new BasicInfo[length];
    //             data = productListArray;
    //             break;
    //     }

    //     return data;
    // }
}
